package chapter3.homework;

import java.io.*;

/**
 * @Project ：learn_java
 * @File ：Q5.java
 * @IDE ：IntelliJ IDEA
 * @Author ：自由如风间
 * @Date ：2025/3/3 18:52
 * @Description ：For study.
 */

public class Q5 {
    public static void main(String[] args) {
        String ls = System.lineSeparator();
        String data = "int a = 10;" + ls +
                "char c = 'a';" + ls +
                "double d = 2.5;" + ls +
                "boolean b = true;" + ls +
                "String str = \"IT枫斗者\"";
        String path = "testIO\\data.dat";

        /*
            当你以写入模式（FileOutputStream）打开一个文件时，默认会覆盖文件原有的内容，
            所以在写入操作完成后，文件指针位于文件末尾，
            此时再进行读取操作，br.readLine() 会立即返回 null，无法读取到任何内容。
            因此写入和读取的操作是不可以在同一个try-catch里面执行的
        */

        try (
                OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(path));
                BufferedWriter bw = new BufferedWriter(osw);
        ) {
            bw.write(data);
            bw.newLine();

            System.out.println("写入操作完成");
        } catch (IOException e) {
            System.err.println("写入文件时出现错误: " + e.getMessage());
        }

        try (
                InputStreamReader isr = new InputStreamReader(new FileInputStream(path));
                BufferedReader br = new BufferedReader(isr);
        ) {
            String buffer;
            while ((buffer = br.readLine()) != null) {
                System.out.println(buffer);
            }
            System.out.println("文件读取完成");
        } catch (Exception e) {
            System.err.println("写入文件时出现错误: " + e.getMessage());
        }
    }
}
